package org.laizili.solution.nowcodertop101.search;

/**
 * <a href="https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b?tpId=295&sfm=html&channel=nowcoder">BM17. 二分查找-I</a>
 * <p>
 * tags: 二分查找;
 */
public class BM17 {
    private static class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
         *
         * @param nums   int整型一维数组
         * @param target int整型
         * @return int整型
         */
        public int search(int[] nums, int target) {
            // write code here
            int left = 0, right = nums.length;
            while (left < right) {
                int mid = (left + right) / 2;
                if (nums[mid] == target) {
                    return mid;
                } else if (nums[mid] < target) {
                    left = mid + 1;
                } else {
                    right = mid;
                }
            }
            return -1;
            //return left; // insertion position
        }
    }

    public static void main(String[] args) {
        System.out.println(new Solution().search(new int[]{-1, 0, 3, 4, 6, 10, 13, 14}, -3));
        System.out.println(new Solution().search(new int[]{-1, 0, 3, 4, 6, 10, 13, 14}, 2));
        System.out.println(new Solution().search(new int[]{-1, 0, 3, 4, 6, 10, 13, 14}, 6));
        System.out.println(new Solution().search(new int[]{-1, 0, 3, 4, 6, 10, 13, 14}, 20));
    }
}
